sql->存储过程->参数传递的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 07:46:35
初学sql,有个参数传递的问题,请前辈指点 ^-^
以下为一个计算1至n和的存储过程(暂定n为12)
create procedure 计算数列和
@f_add int output
as
declare @sum int ,@x int
set @sum=0
set @x=1
while @x<=@f_add
begin
set @sum=@sum+@x
set @x=@x+1
end
return @sum
go

declare @数列和 int
set @数列和=12
exec 计算数列和 @数列和
print @数列和
go

为什么运行后,显示为12呢?这里变量 @数列和 的值为什么没有在exec后改变呢?另外,我也想要直接利用 参数@f_add(不通过中间变量 @数列和)来赋值12 ,于是在第一个go后写成 :
exec 计算数列和 '12'
print 计算数列和 @f_add
go
但是这样写run后也出错,为什么呢?

其实看看Books Online就明白了,有示例的
create procedure 计算数列和
@f_add int,@f_sum int output
as
declare @sum int ,@x int
set @sum=0
set @x=1
while @x<=@f_add
begin
set @sum=@sum+@x
set @x=@x+1
end
set @f_sum=@sum
return
go

declare @数列和 int
exec 计算数列和 12,@数列和 output
print @数列和
go